﻿Imports Negocio
Imports Entidad
Imports Utilitario
Public Class frmAgregaDireccion

    Dim servicio1 As New ClienteNegocio
    Dim servicio2 As New PedidoNegocio
    Dim util As New Utiles

    Dim CIA As String = ""
    Dim codEntrega As String = ""
    Dim codCliente As String = ""

    Sub New(CIA As String, codEntrega As String, codCliente As String)

        ' Llamada necesaria para el diseñador.
        InitializeComponent()

        ' Agregue cualquier inicialización después de la llamada a InitializeComponent().
        Me.codEntrega = codEntrega
        Me.CIA = CIA
        Me.codCliente = codCliente
    End Sub

    Sub limpiar()
        txtDireccion.Text = ""
        txtReferencia.Text = ""
        txtContacto.Text = ""
        cboDepartamento.SelectedIndex = 0
        txtLatitud.Text = ""
        txtLongitud.Text = ""
        mostrarActivo("0")
        mostrarBotones(True, False)
    End Sub

    Sub mostrarActivo(flag As String)
        If flag = "1" Then
            chkActivo.Checked = True
        Else
            chkActivo.Checked = False
        End If
    End Sub

    Sub mostrarBotones(x As Boolean, y As Boolean)
        btnGuardar.Visible = x
        btnActualizar.Visible = y
    End Sub

    Sub cargarTiposEntrega()
        Dim ds As DataSet = servicio1.obtenerTipoEntrega()
        With cboTipoEntrega
            .DataSource = ds.Tables(0)
            .ValueMember = "TEN_Codigo"
            .DisplayMember = "TEN_Descripcion"
        End With
    End Sub

    Sub cargarDepartamentos(combo As ComboBox)
        Dim ds As DataSet = servicio2.listarDepartamentos()
        With combo
            .DataSource = ds.Tables(0)
            .ValueMember = "DEP_Codigo"
            .DisplayMember = "DEP_Descripcion"
        End With
    End Sub

    Sub cargarProvincias(codDepartamento As String, combo As ComboBox)
        Dim ds As DataSet = servicio2.listarProvinciaXDepartamento(codDepartamento)
        With combo
            .DataSource = ds.Tables(0)
            .ValueMember = "PRO_Codigo"
            .DisplayMember = "PRO_Descripcion"
        End With
    End Sub

    Sub cargarDistritos(codProvincia As String, combo As ComboBox)
        Dim ds As DataSet = servicio2.listarDistritosXProvincia(codProvincia)
        With combo
            .DataSource = ds.Tables(0)
            .ValueMember = "DIS_Codigo"
            .DisplayMember = "DIS_Descripcion"
        End With
    End Sub

    Sub cargaInicial()
        cargarTiposEntrega()
        cargarDepartamentos(cboDepartamento)
        cargarProvincias(cboDepartamento.SelectedValue.ToString, cboProvincia)
        cargarDistritos(cboProvincia.SelectedValue.ToString, cboDistrito)
        If codEntrega <> "" Then
            Dim entClienteEntrega As ClienteEntrega = servicio1.obtenerDireccionEntregaXID(codEntrega)
            txtDireccion.Text = entClienteEntrega.CLEN_Direccion
            txtReferencia.Text = entClienteEntrega.CLEN_Referencia
            txtContacto.Text = entClienteEntrega.CLEN_Contacto
            cboDepartamento.SelectedValue = entClienteEntrega.DIS_Codigo.Substring(0, 2)
            cboProvincia.SelectedValue = entClienteEntrega.DIS_Codigo.Substring(0, 4)
            cboDistrito.SelectedValue = entClienteEntrega.DIS_Codigo
            cboTipoEntrega.SelectedValue = entClienteEntrega.TEN_Codigo
            txtLatitud.Text = entClienteEntrega.CLEN_Latitud
            txtLongitud.Text = entClienteEntrega.CLEN_Longitud
            mostrarActivo(entClienteEntrega.CLEN_Activo)
            mostrarBotones(False, True)
        End If
    End Sub

    Private Sub btnGuardar_Click(sender As System.Object, e As System.EventArgs) Handles btnGuardar.Click
        If MsgBox("¿Esta seguro que desea realizar este registro?", MsgBoxStyle.Question + MsgBoxStyle.YesNo + MsgBoxStyle.DefaultButton2, "Mensajes al Usuario") = MsgBoxResult.Yes Then
            Dim entClienteEntrega As New ClienteEntrega(CIA, codEntrega, codCliente, txtDireccion.Text.Trim, txtReferencia.Text.Trim,
                                                        txtContacto.Text.Trim, cboDistrito.SelectedValue.ToString, txtLatitud.Text.Trim,
                                                        txtLongitud.Text.Trim, cboTipoEntrega.SelectedValue.ToString, IIf(chkActivo.Checked = True, "1", "0"))

            If servicio1.registrarClienteEntrega(entClienteEntrega) = True Then
                util.mensaje("La dirección se registró correctamente.")
                DialogResult = Windows.Forms.DialogResult.OK
            Else
                util.mensaje("Ocurrió un error. Intentelo nuevamente.")
            End If
        End If
    End Sub

    Private Sub btnActualizar_Click(sender As Object, e As System.EventArgs) Handles btnActualizar.Click
        If MsgBox("¿Esta seguro que desea realizar este registro?", MsgBoxStyle.Question + MsgBoxStyle.YesNo + MsgBoxStyle.DefaultButton2, "Mensajes al Usuario") = MsgBoxResult.Yes Then
            Dim entClienteEntrega As New ClienteEntrega(CIA, codEntrega, codCliente, txtDireccion.Text.Trim, txtReferencia.Text.Trim,
                                                        txtContacto.Text.Trim, cboDistrito.SelectedValue.ToString, txtLatitud.Text.Trim,
                                                        txtLongitud.Text.Trim, cboTipoEntrega.SelectedValue.ToString, IIf(chkActivo.Checked = True, "1", "0"))

            If servicio1.actualizarClienteEntrega(entClienteEntrega) = True Then
                util.mensaje("La dirección se actualizó correctamente.")
                DialogResult = Windows.Forms.DialogResult.OK
            Else
                util.mensaje("Ocurrió un error. Intentelo nuevamente.")
            End If
        End If
    End Sub

    Private Sub btnLimpiar_Click(sender As Object, e As System.EventArgs) Handles btnLimpiar.Click
        limpiar()
        txtDireccion.Focus()
    End Sub

    Private Sub frmAgregaDireccion_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        cargaInicial()
    End Sub

    Private Sub cboDepartamento_SelectedValueChanged(sender As Object, e As System.EventArgs) Handles cboDepartamento.SelectedValueChanged
        cargarProvincias(cboDepartamento.SelectedValue.ToString, cboProvincia)
    End Sub

    Private Sub cboProvincia_SelectedValueChanged(sender As Object, e As System.EventArgs) Handles cboProvincia.SelectedValueChanged
        cargarDistritos(cboProvincia.SelectedValue.ToString, cboDistrito)
    End Sub

End Class